package red.social;

import java.util.ArrayList;
import java.util.Date;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Point;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;

public class AnimacionOverLay extends Overlay {
	 Bitmap icono=null;

	 ArrayList<Date> tiempos;
	 ArrayList<GeoPoint> puntos;
	 String nombre;
	 GeoPoint posicion = null;	 

	 static final int offsetX=18;
	 static final int offsetY=20;

	 int mapWidth;
	 int mapHeight;

	final Context ctx;
	boolean esp;
	boolean ontap;
	
	ActividadPosicion ap;

	/**
	 * Constructor of the overlay. Takes in a stationmessage,
	 * a POJO containing all info about the overlay to draw.
	 * The context, needed to create the images and show a popup
	 * when the overlay is clicked. The height and width are needed
	 * so we know if drawing the overlay is necessary or not.
	 * If the overlay is outside of the map, we don't minde because
	 * we can't see it.
	 */
	public AnimacionOverLay(Context ctx,int mapWidth,int mapHeight,GeoPoint posicion,String nombre,ActividadPosicion aP,Bitmap foto){
		this.ctx = ctx;
		this.posicion=posicion;	
		if(icono==null)
			icono=foto;
		this.mapWidth=mapWidth;
		this.mapHeight=mapWidth;
		this.nombre= nombre;
		ap = aP;
		
		
	}

	@Override
	public void draw(Canvas canvas, MapView mapView, boolean shadow) {
		
	        Paint p1 = new Paint();   

				Point pt = mapView.getProjection().toPixels( posicion,null);
				
				canvas.drawBitmap(icono, pt.x-20, pt.y-20, p1)  ;
	    				    
	    	
		super.draw(canvas, mapView, shadow);
	}

	
	@Override
	public boolean onTap(GeoPoint p, MapView mapView) {	
		
		 Point pointTap = mapView.getProjection().toPixels(p, null);
		 if (posicion!=null){
		 Point pointMap = mapView.getProjection().toPixels(posicion, null);
		 	        if(
		 	                pointTap.x-pointMap.x>=-20
		 	                && pointTap.x-pointMap.x<=20
		 	                && pointMap.y-pointTap.y>=-20
		 	                && pointMap.y-pointTap.y<=20
		 	        )
		 	        {
		
		 	        	//Como s�lo mostraremos un s�lo di�logo en la actividad no usaremos el par�metro id.
		 		    	//Creamos el di�logo.
		 		    	final Dialog d = new Dialog(ctx);
		 		    	//Lo configuramos:
		 		    	//Configuramos que no se pueda salir de �l pulsando fuera de su zona.
		 		    	d.setCanceledOnTouchOutside(true);
		 		    	//Le damos un t�tulo.
		 		    	//d.setTitle(nombre);
		 		    	//Le damos una vista que mostrar
		 		    	d.setContentView(R.layout.ontap_posicion);
		 		    
		 		    	//Recogemos los widgets pertenecientes al layout
		 		    	Button ruta = (Button)d.findViewById(R.id.botonRuta);
		 		   		 		
		 		    	ruta.setOnClickListener(new OnClickListener() {
		 					
		 		    		/** Se llama a este m�todo cuando se produzca el click en el bot�n.
		 					 * 
		 					 * @param v Ser� el View clickeado, en nuestro caso, un ImageButton.
		 					 */

		 					public void onClick(View v) {
		 			
		 						ap.establecerRuta(posicion);
		 						d.dismiss();
		 					}
		 				});
		 		    	//Devolvemos el di�logo creado.
		 		    	d.show();
		 		    	Toast.makeText(this.ctx,nombre, Toast.LENGTH_SHORT).show();
		 	            return true;
		 	        }		 	 	
		
		 }
		return super.onTap(p, mapView);
		
	}	
	
}



